package com.liuhuxiang.order.config;

import com.liuhuxiang.order.interceptors.feign.CustomFeignInterceptor;
import feign.Logger;
import feign.Logger.Level;
import feign.Request;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Feign的日志配置文件
 * @author liuhuxiang
 * @version: FeignConfig.java, 2023年03月01日 下午7:21 liuhuxiang  Exp $
 */
//全局配置：当我们使用了@Configuration,会将配置作用在所有的服务提供方(Tip:就和自定义Ribbon负载均衡策略是一样的 RibbonRandomRuleConfig)
//局部配置：如果只想针对某一个服务进行配置，就不要加@Configuration，此时为局部配置
//@Configuration
public class FeignConfig {

    /***
     * 这里注意 Logger要用的是Feign的，不要用Log4j的
     * 另外，这里观察下，这种全局变量的配置方式基本都一样，比对 RibbonRandomRuleConfig
     * @return
     */
    @Bean
    public Logger.Level feignLoggerLevel(){
        return Level.FULL;
    }

    /***
     * 全局方式配置超时时间
     * @return
     */
    @Bean
    public Request.Options options() {
        return new Request.Options(5000, 10000);
    }

    /***
     * 配置Feign的全局拦截器
     * @return
     */
    @Bean
    public CustomFeignInterceptor feignAuthRequestInterceptor(){
        return new CustomFeignInterceptor();
    }

}